import {dayjs} from "element-plus";

// 使用day.js将 1970-01-20T11:02:55.158Z 格式的时间转换为 yyyy-MM-dd HH:mm:ss 格式
export const formatTime = (time) => {
    return dayjs(time).format("YYYY-MM-DD HH:mm:ss");
}

/**
 * @author: yuCloud
 * @desc: 合并两个对象相同字段并且去除不同字段，返回第二个参数的值
 * @params:
 * @type:
 * @time: 2023-05-05 16:49:38
 **/
export const mergeObjects = (obj1, obj2) => {
    const newObj = {};
    Object.keys(obj1).forEach((key) => {
        if (obj2.hasOwnProperty(key)) {
            newObj[key] = obj2[key];
        }
    });
    console.log(newObj)
    return newObj;
}


/**
* @author: yuCloud
* @desc: 合并两个数组，如果第一个数组中有和第二个数组中相同的_id，就将第一个数组中相同的去除
* @params:
* @type:
* @time: 2023-05-07 17:34:26
**/

export const mergeArray = (arr1, arr2) => {
    const newArr = arr1.filter((item) => {
        return !arr2.some((item2) => {
            return item._id === item2._id;
        });
    });
    return newArr.concat(arr2);
}

/**
* @author: yuCloud
* @desc: 递归遍历树形结构，找出选中的二级菜单的_id和最后一级菜单的_id
* @params:
* @type:
* @time: 2023-05-29 21:20:02
**/

export const findParentId = (tree= [], ids = []) => {
    let checkedKeys = []
    let halfCheckedKeys = []
    // 遍历所有的选中和半选中的_id
    ids.forEach((i) => {
        // 递归遍历树形结构
        const childrenFn = (treeChildren) => {
            //  遍历树形结构
            treeChildren.forEach((item) => {
                // 如果有子菜单并且没有action属性，就继续递归遍历
                if (item.children && !item.action) {
                    if (item._id === i) {
                        halfCheckedKeys.push(item._id);
                    }
                    childrenFn(item.children);
                }
                // 如果有子菜单并且有action属性，就将_id添加到halfCheckedKeys中
                if (item.children && item.action) {
                    if (item._id === i) {
                        halfCheckedKeys.push(item._id);
                    }
                    childrenFn(item.children);
                }
                // 如果没有子菜单并且有action属性，就将_id添加到checkedKeys中
                if (!item.children && !item.action) {
                    if (item._id === i) {
                        checkedKeys.push(item._id);
                    }
                }
            });
        }
        childrenFn(tree)
    });
    return {
        checkedKeys,
        halfCheckedKeys
    };
}

/**
* @author: yuCloud
* @desc: 用于自定义指令，根据路由匹配是否显示元素
* @params:
* @type:
* @time: 2023-06-03 18:49:37
**/

// 递归匹配路由
export const matchingRoutes = (routers, path, value, el) => {
    routers.forEach(item => {
        if (item.path === path) {
            const i = item.children.findIndex(c => c.menuCode === value)
            if (i !== -1) {
                el.style.display = 'inline-block'
            } else {
                el.style.display = 'none'
            }
        } else if (item.children) {
            matchingRoutes(item.children, path, value, el)
        }
    })
}
